﻿#define _CRT_SECURE_NO_WARNINGS 1
// 原题连接：https://www.luogu.com.cn/problem/P1311
/*
题目描述：
题目描述
丽江河边有
�
n 家很有特色的客栈，客栈按照其位置顺序从
1
1 到
�
n 编号。每家客栈都按照某一种色调进行装饰（总共
�
k 种，用整数
0
∼
�
−
1
0∼k−1 表示），且每家客栈都设有一家咖啡店，每家咖啡店均有各自的最低消费。

两位游客一起去丽江旅游，他们喜欢相同的色调，又想尝试两个不同的客栈，因此决定分别住在色调相同的两家客栈中。晚上，他们打算选择一家咖啡店喝咖啡，要求咖啡店位于两人住的两家客栈之间（包括他们住的客栈），且咖啡店的最低消费不超过
�
p 。

他们想知道总共有多少种选择住宿的方案，保证晚上可以找到一家最低消费不超过
�
p 元的咖啡店小聚。

输入格式
共
�
+
1
n+1 行。

第一行三个整数
�
,
�
,
�
n,k,p，每两个整数之间用一个空格隔开，分别表示客栈的个数，色调的数目和能接受的最低消费的最高值；

接下来的
�
n 行，第
�
+
1
i+1 行两个整数，之间用一个空格隔开，分别表示
�
i 号客栈的装饰色调
�
�
a
i
​
  和
�
i 号客栈的咖啡店的最低消费
�
�
b
i
​
 。

输出格式
一个整数，表示可选的住宿方案的总数。

输入输出样例
输入 #1复制
5 2 3
0 5
1 3
0 2
1 4
1 5
输出 #1复制
3
说明/提示
样例解释


2 人要住同样色调的客栈，所有可选的住宿方案包括：住客栈①③，②④，②⑤，④⑤，但是若选择住
4
,
5
4,5号客栈的话，
4
,
5
4,5 号客栈之间的咖啡店的最低消费是
4
4 ，而两人能承受的最低消费是
3
3 元，所以不满足要求。因此只有前
3
3 种方案可选。

数据范围
对于
30
%
30% 的数据，有
�
≤
100
n≤100 ；
对于
50
%
50% 的数据，有
�
≤
1
 
000
n≤1000；
对于
100
%
100% 的数据，有
2
≤
�
≤
2
×
1
0
5
2≤n≤2×10
5
 ，
1
≤
�
≤
50
1≤k≤50，
0
≤
�
≤
100
0≤p≤100，
0
≤
�
�
≤
100
0≤b
i
​
 ≤100。
*/
// 开始解题：
// 方法——哈希表
#include <iostream>
using namespace std;
const int N = 200010;
int n, k, p;
int color[N], cost[N];
int color_hash[51];
// 开始解题：
// 方法——哈希表
int main() {
	int ret = 0;
	int t = 0; // 记录当前枚举到color[i]时候，例i最近的费用不超过p的费用的下标
	int hash_index = 0; // 记录哈希表中记录到的颜色的最后一个下标
	scanf("%d%d%d", &n, &k, &p);
	for (int i = 1; i <= n; i++) {
		scanf("%d%d", &color[i], &cost[i]);
		if (cost[i] <= p) {
			t = i;
			for (int j = hash_index + 1; j <= t; j++) {
				color_hash[color[j]]++;
			}
			hash_index = t;
		}
		ret += color_hash[color[i]];
		if (t == i) {
			ret--;
		}
	}
	cout << ret << endl;
	return 0;
}
